import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// 移动端适配 用于设置rem基准值
import 'lib-flexible/flexible'
// 导入awesome.css文件(图标)
import './assets/font-awesome/css/font-awesome.css'
//导入动画文件
import './assets/css/animate.css'
import axios from 'axios'
import VueAxios from 'vue-axios'
//导入验证token白名单文件
import {validataTokenUrls} from './assets/js/url'
import { 
  Tabbar, 
  TabbarItem,
  Search,
  Toast,
  NavBar,
  Stepper,
  GoodsAction,
  GoodsActionIcon,
  GoodsActionButton,
  Form,
  Field,
  Button,
  Swipe,
  SwipeItem,
  SubmitBar,
  Checkbox,
  CheckboxGroup,
  AddressList,
  Overlay,
  AddressEdit,
  Cascader,
  Uploader,
  Tab, Tabs ,
  Dialog
 } from 'vant';

Vue.
use(Tabbar)
.use(TabbarItem)
.use(Search)
.use(Toast)
.use(NavBar)
.use(Stepper)
.use(GoodsActionButton)
.use(GoodsActionIcon)
.use(GoodsAction)
.use( Form )
.use(Field)
.use(Button)
.use(Swipe)
.use(SwipeItem)
.use( SubmitBar)
.use(Checkbox)
.use(CheckboxGroup)
.use(AddressList)
.use(Overlay)
.use( AddressEdit)
.use( Cascader)
.use( Uploader)
.use(Tab)
.use(Tabs )
.use( Dialog)
//设置请求基础路径
axios.defaults.baseURL = 'http://www.kangliuyong.com:10002'

//axios拦截器
// 添加请求拦截器
axios.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  //发送请求之前，显示加载中
  Toast.loading({
    message: '加载中...',
    forbidClick: true,
    duration: 0
  });
  // 请求参数拦截处理
  // 
  let appkey = 'U2FsdGVkX19WSQ59Cg+Fj9jNZPxRC5y0xB1iV06BeNA=';
  let token=sessionStorage.getItem('token');
  if(config.method=='post') {
    //进行post请求参数序列化
    config.data=config.data || {};
    let dataString='';
    for(let key in config.data) {
      // 
      dataString+=`${key}=${config.data[key]}&`;
    }
    config.data=dataString+'appkey='+appkey;
    // 
    //找到需要验证token的url
    if(validataTokenUrls.indexOf(config.url)>-1) {
      config.data+=`&tokenString=${token}`;
    }
  }
  // 处理请求为get时的参数处理
  else if(config.method=='get') {
    config.params=config.params || {};
    config.params.appkey=appkey;
      //找到需要验证token的url
      if(validataTokenUrls.indexOf(config.url)>-1) {
        config.params.tokenString=token;
      }
  }
  return config;
}, error => {
  // 对请求错误做些什么
  Toast.clear();
  return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(response => {
  // 对响应数据做点什么
  //服务器响应数据后，关闭加载提示
  Toast.clear();
  return response;
}, error => {
  // 对响应错误做点什么
  Toast.clear();
  return Promise.reject(error);
});
//axios添加到原型里去 ,实现this.使用
Vue.use(VueAxios, axios)


Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
